package com.meatball.core.config

import io.swagger.v3.oas.models.Components
import io.swagger.v3.oas.models.OpenAPI
import io.swagger.v3.oas.models.security.SecurityRequirement
import io.swagger.v3.oas.models.security.SecurityScheme
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

@Configuration
class SwaggerConfig {
    @Bean
    fun springShopOpenAPI(): OpenAPI {
        return OpenAPI()
                .components(components())
                // 2. 再在这里添加上Swagger要使用的安全策略
                // addList()中写上对应的key
                .addSecurityItem(SecurityRequirement().addList("tokenScheme"))
    }

    /**
     * TODO 先在组件中注册安全策略
     *
     * @return
     */
    private fun components(): Components {
        // 第一个参数是key值，后面是初始化一个安全策略的参数
        return Components()
                .addSecuritySchemes("tokenScheme", SecurityScheme().type(SecurityScheme.Type.HTTP).type(SecurityScheme.Type.HTTP).scheme("Bearer"))
    }
}